/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyectoempresa.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

/**
 *
 * @author Diego
 */
@Entity
public class Lineafactura implements Serializable {

    @Id
    @Column(name = "linea_f")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(columnDefinition = "varchar(20)", nullable = true)
    private String descripcion;
    private Long id_producto=1l;
    @Column
    private Integer cantidad;
    @Column
    private Double precioUnitario;
    @Column(columnDefinition = "varchar(20)", nullable = true)
    private double descuento;
    @Column
    private String resuldescuento;
    private String totalCobrar;
    private String totaldescuento;
        protected String iva="0.0";
    @ManyToMany
    @JoinTable(name = "factura_linea", joinColumns = {
        @JoinColumn(name = "linea_f", referencedColumnName = "linea_f")},
    inverseJoinColumns = {
        @JoinColumn(name = "unico_id", referencedColumnName = "unico_id")})
    private List<Factura> facturas;

    public Lineafactura() {
        facturas = new ArrayList<Factura>();
    }

    public Lineafactura(String descripcion, Integer cantidad, Double precioUnitario, double descuento, String resuldescuento) {
        this.descripcion = descripcion;
        this.cantidad = cantidad;
        this.precioUnitario = precioUnitario;
        this.descuento = descuento;
        this.resuldescuento = resuldescuento;
        facturas = new ArrayList<Factura>();
    }
    public String getIva() {
        return iva;
    }

    public void setIva(String iva) {
        this.iva = iva;
    }
    public String getTotaldescuento() {
        return totaldescuento;
    }

    public void setTotaldescuento(String totaldescuento) {
        this.totaldescuento = totaldescuento;
    }

    public String getTotalCobrar() {
        return totalCobrar;
    }

    public void setTotalCobrar(String totalCobrar) {
        this.totalCobrar = totalCobrar;
    }
    
    public Long getId_producto() {
        return id_producto;
    }

    public void setId_producto(Long id_producto) {
        this.id_producto = id_producto;
    }


    public double getDescuento() {
        return descuento;
    }

    public void setDescuento(double descuento) {
        this.descuento = descuento;
    }

    public String getResuldescuento() {
        return resuldescuento;
    }

    public void setResuldescuento(String resuldescuento) {
        this.resuldescuento = resuldescuento;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Double getPrecioUnitario() {
        return precioUnitario;
    }

    public void setPrecioUnitario(Double precioUnitario) {
        this.precioUnitario = precioUnitario;
    }

    public List<Factura> getFacturas() {
        return facturas;
    }

    public void setFacturas(List<Factura> facturas) {
        this.facturas = facturas;
    }

    public Double getPrecioTotal() {
        Double total = 0.0;
        total = this.getCantidad() * this.getPrecioUnitario()+Double.parseDouble(this.getIva());
        return total;
    }

    @Override
    public String toString() {
        return "Lineafactura{" + "descripcion=" + descripcion + "cantidad=" + cantidad + "precioUnitario=" + precioUnitario + "factura=" + '}';
    }

    public void agregar(Factura fac) {
        if ((fac != null) && !facturas.contains(fac)) {
            this.facturas.add(fac);
        }

    }
}
